package entidades;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.LinkedList;

public class ClienteEntity {

	public static int Alta = 0;

	private String apellido;

	private String nombre;

	private String direccion;

	private String localidad;

	private String telefono;

	private int codigoCliente;

	private LinkedList<AnteojosEntity> anteojos = new LinkedList<AnteojosEntity>();

	public String getNombreCompleto() {
		return (getApellido() + ", " + getNombre());
	}

	public String getApellido() {
		return apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getDireccion() {
		return direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	public String getLocalidad() {
		return localidad;
	}

	public void setLocalidad(String localidad) {
		this.localidad = localidad;
	}

	public String getTelefono() {
		return telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	public LinkedList<AnteojosEntity> getAnteojos() {
		return anteojos;
	}

	public void setAnteojos(LinkedList<AnteojosEntity> anteojos) {
		this.anteojos = anteojos;
	}

	public void insertar() {

	}

	public int getCodigoCliente() {
		return codigoCliente;
	}

	public void setCodigoCliente(int codigoCliente) {
		this.codigoCliente = codigoCliente;
	}

	public int save(int codCliente) {
		Connection con = Conexiones.getConexionMySQL();
		String query;

		if (codCliente == 0) {
			query = "insert into clientes (apellido,nombre,direccion,localidad,telefono) values"
					+ "       ('"
					+ this.getApellido()
					+ "','"
					+ this.getNombre()
					+ "','"
					+ this.getDireccion()
					+ "','"
					+ this.getLocalidad() + "','" + this.getTelefono() + "')";
		} else {
			query = "update clientes set apellido ='" + this.getApellido()
					+ "', nombre = '" + this.getNombre() + "', direccion ='"
					+ this.getDireccion() + "', localidad = '"
					+ this.getLocalidad() + "', telefono ='"
					+ this.getTelefono() + "' where id = " + codCliente;

		}
		try {
			Statement stm = con.createStatement();
			System.out.println(query);
			stm.executeUpdate(query);
			if (codCliente == 0) {
				ResultSet rs = (stm
						.executeQuery("select max(id)as ID from clientes"));
				rs.next();
				codCliente = rs.getInt("ID");
			}
			stm.close();
			con.close();

		} catch (SQLException e) {
			System.out.println("Error en cliente entity");
			e.printStackTrace();
		}
		return codCliente;

	}

	public void eliminarCliente() {
		Connection con = Conexiones.getConexionMySQL();
		Statement stm;
		try {
			boolean multifocal = false;
			stm = con.createStatement();
			for (AnteojosEntity anteojo : getAnteojos()) {
				multifocal = anteojo.getTipo().equalsIgnoreCase("bifocal") || anteojo.getTipo().equalsIgnoreCase("multifocal");
				AnteojosEntity.eliminarAnteojo(anteojo.getId(), multifocal);
			}
			stm.executeUpdate("delete from clientes where id = "
					+ getCodigoCliente());
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public static LinkedList<ClienteEntity> getClientes(String filtro) {

		Connection con = Conexiones.getConexionMySQL();
		Statement stm;
		LinkedList<ClienteEntity> lista = new LinkedList<ClienteEntity>();
		ClienteEntity cliente = new ClienteEntity();

		try {
			stm = con.createStatement();
			ResultSet rs = stm.executeQuery("select * from clientes" + filtro);

			while (rs.next()) {
				cliente = new ClienteEntity();
				cliente.setCodigoCliente(rs.getInt("id"));
				cliente.setApellido(rs.getString("Apellido"));
				cliente.setNombre(rs.getString("Nombre"));
				cliente.setDireccion(rs.getString("Direccion"));
				cliente.setLocalidad(rs.getString("Localidad"));
				cliente.setTelefono(rs.getString("Telefono"));

				cliente.setAnteojos(AnteojosEntity.getAnteojos(cliente
						.getCodigoCliente()));

				lista.add(cliente);
			}
			con.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return lista;
	}

}
